Skill

Lambda এবং Higher-order Functions

Mobile App Development - কটলিন (Kotlin)
297

Lambda এবং Higher-order Functions

কটলিনে Lambda Expressions এবং Higher-order Functions ফাংশনাল প্রোগ্রামিংয়ের প্রধান উপাদান। এগুলো কোড লেখার কার্যকারিতা বাড়ায় এবং প্রোগ্রামিংকে আরও ডাইনামিক এবং ফ্লেক্সিবল করে তোলে। নিচে Lambda এবং Higher-order Functions নিয়ে বিস্তারিত আলোচনা করা হলো:


১. Lambda Expressions

Lambda Expressions হলো অ্যানোনিমাস (নামহীন) ফাংশন, যা কোড ব্লকের মতো কাজ করে। এটি এক বা একাধিক প্যারামিটার গ্রহণ করতে পারে এবং একটি এক্সপ্রেশন বা স্টেটমেন্ট রিটার্ন করতে পারে।

i) Lambda Expression Syntax

কটলিনে Lambda Expressions সাধারণত {} (ব্রেসেস) এর মধ্যে লেখা হয়।

সাধারণ সিনট্যাক্স:

{ parameter(s) -> body }

ii) উদাহরণ

একটি সাধারণ Lambda Expression:

val sum = { a: Int, b: Int -> a + b }
println(sum(5, 3)) // আউটপুট: 8

ব্যাখ্যা:

  • এখানে sum একটি Lambda Expression যা দুটি Int প্যারামিটার গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।

২. Higher-order Functions

Higher-order Functions হলো এমন ফাংশন, যা একটি ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করতে পারে বা একটি ফাংশনকে রিটার্ন করতে পারে। এটি কোড পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়ায়।

i) Higher-order Function Syntax

সাধারণ সিনট্যাক্স:

fun functionName(parameter: (Type) -> ReturnType): ReturnType {
    // function body
}

ii) উদাহরণ

একটি Higher-order Function:

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val result = operateOnNumbers(4, 5, { x, y -> x + y })
    println(result) // আউটপুট: 9
}

ব্যাখ্যা:

  • এখানে operateOnNumbers ফাংশনটি তিনটি প্যারামিটার নেয়: দুইটি Int সংখ্যা এবং একটি Lambda Expression যা দুইটি Int প্যারামিটার গ্রহণ করে এবং একটি Int রিটার্ন করে।
  • main ফাংশনে Lambda Expression হিসেবে যোগফল নির্ধারণ করা হয়েছে।

৩. Trailing Lambda Syntax

কটলিনে, যদি একটি ফাংশনের শেষ প্যারামিটার একটি Lambda Expression হয়, তবে Lambda Expression কে ফাংশন কলের বাইরে রেখে লেখা যায়।

উদাহরণ:

val result = operateOnNumbers(4, 5) { x, y -> x * y }
println(result) // আউটপুট: 20

ব্যাখ্যা:

  • এখানে operateOnNumbers ফাংশন কলের পর Lambda Expression { x, y -> x * y } একটি Trailing Lambda হিসেবে ব্যবহার করা হয়েছে।

৪. Smart Casts

Lambda Expressions এবং Higher-order Functions এর সাথে Smart Casts কাজ করে, যা একটি টেস্ট করে নিশ্চিত হওয়ার পরে স্বয়ংক্রিয়ভাবে টাইপ কাস্ট করে।

উদাহরণ:

fun printLength(obj: Any) {
    if (obj is String) {
        println("String length: ${obj.length}") // obj স্বয়ংক্রিয়ভাবে String টাইপে কাস্ট হয়েছে
    }
}

ব্যাখ্যা:

  • এখানে obj is String চেক করার পর, কটলিন obj কে স্বয়ংক্রিয়ভাবে String টাইপ হিসেবে চিনতে পারে।

৫. Common Higher-order Functions

কটলিনে Collections-এর সাথে কিছু সাধারণ Higher-order Functions আছে, যেমন:

i) map

map ফাংশন একটি কালেকশনের প্রতিটি আইটেমের উপর একটি অপারেশন প্রয়োগ করে এবং নতুন কালেকশন রিটার্ন করে।

উদাহরণ:

val numbers = listOf(1, 2, 3, 4)
val doubled = numbers.map { it * 2 }
println(doubled) // আউটপুট: [2, 4, 6, 8]

ii) filter

filter ফাংশন একটি শর্ত মেনে চলা আইটেমগুলো সিলেক্ট করে নতুন একটি কালেকশন রিটার্ন করে।

উদাহরণ:

val numbers = listOf(1, 2, 3, 4, 5, 6)
val evenNumbers = numbers.filter { it % 2 == 0 }
println(evenNumbers) // আউটপুট: [2, 4, 6]

iii) forEach

forEach ফাংশন একটি কালেকশনের প্রতিটি আইটেমের উপর একটি অপারেশন এক্সিকিউট করে।

উদাহরণ:

val fruits = listOf("Apple", "Banana", "Cherry")
fruits.forEach { println(it) }
// আউটপুট: 
// Apple
// Banana
// Cherry

উপসংহার

কটলিনে Lambda Expressions এবং Higher-order Functions ফাংশনাল প্রোগ্রামিংয়ের জন্য শক্তিশালী টুল। এগুলো কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়াতে সাহায্য করে। Lambda Expressions দ্বারা অ্যানোনিমাস ফাংশন তৈরি করা যায়, এবং Higher-order Functions ফাংশনগুলোকে প্যারামিটার হিসেবে গ্রহণ করে কোডকে আরও কার্যকরী করে তোলে।

Content added By

Lambda Expressions কী এবং কিভাবে কাজ করে

311

Lambda Expressions কী এবং কিভাবে কাজ করে

Lambda Expressions হলো অ্যানোনিমাস ফাংশন (অর্থাৎ নামহীন ফাংশন) যা কোনো ফাংশনাল প্রোগ্রামিং কনটেক্সটে ব্যবহৃত হয়। কটলিনে lambda expressions কোডকে আরও সংক্ষিপ্ত এবং পাঠযোগ্য করে তোলে এবং ফাংশনাল প্রোগ্রামিং কনসেপ্টগুলোকে সাপোর্ট করে।

Lambda expressions-এর মাধ্যমে আপনি ফাংশনগুলোকে প্যারামিটার হিসেবে পাস করতে পারেন, যা কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়ায়।


১. Lambda Expressions এর সিনট্যাক্স

কটলিনে lambda expression-এর সাধারণ সিনট্যাক্স হল:

val lambdaName: (ParameterType) -> ReturnType = { parameters -> body }

উদাহরণ:

val sum: (Int, Int) -> Int = { a, b -> a + b }

ব্যাখ্যা:

  • sum একটি lambda expression যা দুইটি Int প্যারামিটার গ্রহণ করে এবং তাদের যোগফল রিটার্ন করে।

২. Lambda Expressions কিভাবে কাজ করে

Lambda expressions-এর মাধ্যমে আপনি একটি ফাংশনকে সহজেই একটি ভ্যারিয়েবলে সংরক্ষণ করতে পারেন এবং তা পরে ফাংশন হিসেবে ব্যবহার করতে পারেন।

উদাহরণ:

fun main() {
    val add: (Int, Int) -> Int = { a, b -> a + b }
    println(add(5, 3)) // আউটপুট: 8
}

ব্যাখ্যা:

  • এখানে add lambda expression দুইটি সংখ্যা যোগ করার জন্য ব্যবহৃত হচ্ছে।

৩. Lambda Expressions কে একটি ফাংশনের প্যারামিটার হিসেবে ব্যবহার করা

Lambda expressions সাধারণত ফাংশনের প্যারামিটার হিসেবে ব্যবহৃত হয়। নিচের উদাহরণে operation ফাংশনে lambda expression প্যারামিটার হিসেবে ব্যবহার করা হয়েছে:

fun operateOnNumbers(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val result = operateOnNumbers(10, 5) { x, y -> x + y }
    println(result) // আউটপুট: 15
}

ব্যাখ্যা:

  • operateOnNumbers ফাংশনটি দুটি সংখ্যা এবং একটি lambda expression গ্রহণ করছে, যা গণনা করার জন্য ব্যবহৃত হচ্ছে।

৪. Single Parameter Lambda Expressions

যদি lambda expression-এ একটি মাত্র প্যারামিটার থাকে, তবে আপনি it কীওয়ার্ড ব্যবহার করতে পারেন।

উদাহরণ:

val square: (Int) -> Int = { it * it }
println(square(4)) // আউটপুট: 16

ব্যাখ্যা:

  • এখানে it স্বয়ংক্রিয়ভাবে একমাত্র প্যারামিটার হিসাবে ব্যবহৃত হচ্ছে।

৫. Returning Multiple Values

Lambda expressions দিয়ে আপনি একটি কলব্যাক ফাংশন লিখতে পারেন যা একাধিক ভ্যালু রিটার্ন করতে পারে।

উদাহরণ:

val multipleValues: (Int) -> Pair<Int, Int> = { it to it * it }
val (num, square) = multipleValues(5)

println("Number: $num, Square: $square") // আউটপুট: Number: 5, Square: 25

ব্যাখ্যা:

  • এখানে multipleValues lambda expression একটি Pair রিটার্ন করছে, যা একটি সংখ্যা এবং তার স্কোয়ার ধারণ করছে।

৬. Higher-order Functions

Lambda expressions কটলিনের higher-order functions-এর একটি গুরুত্বপূর্ণ অংশ। Higher-order functions হল এমন ফাংশন যা অন্য ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করে বা একটি ফাংশনকে রিটার্ন করে।

উদাহরণ:

fun filterEvenNumbers(numbers: List<Int>, predicate: (Int) -> Boolean): List<Int> {
    return numbers.filter(predicate)
}

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5, 6)
    val evenNumbers = filterEvenNumbers(numbers) { it % 2 == 0 }
    println(evenNumbers) // আউটপুট: [2, 4, 6]
}

ব্যাখ্যা:

  • এখানে filterEvenNumbers ফাংশনটি একটি লিস্ট এবং একটি lambda expression গ্রহণ করছে, যা সংখ্যা ফিল্টার করতে ব্যবহৃত হচ্ছে।

উপসংহার

Lambda Expressions কটলিনে একটি শক্তিশালী ফিচার, যা ফাংশনাল প্রোগ্রামিং কনসেপ্টগুলোর বাস্তবায়ন সহজ করে। Lambda expressions আপনাকে কোডকে আরো সংক্ষিপ্ত, পরিষ্কার, এবং পুনঃব্যবহারযোগ্য করে তোলে।

Content added By

Higher-order Functions এর ভূমিকা

255

Higher-order Functions এর ভূমিকা

Higher-order Functions হলো এমন ফাংশন যা এক বা একাধিক ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করতে পারে অথবা একটি ফাংশনকে রিটার্ন করতে পারে। কটলিনে এই ফিচারটি প্রোগ্রামিংকে আরও ফ্লেক্সিবল এবং মডুলার করে তোলে। Higher-order Functions-এর মাধ্যমে আপনি কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে এবং কার্যকরী প্রোগ্রামিং প্যাটার্ন অনুসরণ করতে পারেন।

নিচে Higher-order Functions-এর ভূমিকা ও সুবিধাগুলো আলোচনা করা হলো:


১. ফাংশন প্যারামিটার হিসেবে গ্রহণ

Higher-order Functions ব্যবহার করে আপনি ফাংশনগুলোকে প্যারামিটার হিসেবে গ্রহণ করতে পারেন। এটি কোডকে আরও সংক্ষিপ্ত এবং রিডেবল করে তোলে।

উদাহরণ:

fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val sum = calculate(5, 10) { x, y -> x + y }
    println("Sum: $sum") // আউটপুট: Sum: 15
}

ব্যাখ্যা:

  • calculate ফাংশনটি দুটি Int প্যারামিটার এবং একটি ফাংশন প্যারামিটার হিসেবে নেয়।
  • ল্যাম্বডা এক্সপ্রেশন { x, y -> x + y } calculate ফাংশনে পাস করা হয়েছে।

২. ফাংশন রিটার্ন করা

Higher-order Functions ব্যবহার করে আপনি একটি ফাংশনকে রিটার্নও করতে পারেন। এটি বিশেষভাবে কার্যকর যখন আপনি একটি কাস্টম ফাংশন তৈরি করতে চান।

উদাহরণ:

fun operation(type: String): (Int, Int) -> Int {
    return when (type) {
        "add" -> { x, y -> x + y }
        "subtract" -> { x, y -> x - y }
        else -> { x, y -> 0 }
    }
}

fun main() {
    val add = operation("add")
    val result = add(5, 3)
    println("Result: $result") // আউটপুট: Result: 8
}

ব্যাখ্যা:

  • operation ফাংশনটি একটি String প্যারামিটার নেয় এবং একটি ল্যাম্বডা ফাংশন রিটার্ন করে যা যোগ বা বিয়োগ করার কাজ করে।

৩. ডাটা প্রসেসিং এবং কালেকশন ম্যানিপুলেশন

Higher-order Functions ব্যবহার করে কালেকশনগুলোর উপর বিভিন্ন কার্যকলাপ সহজে করা যায়। কটলিনের অনেক বিল্ট-ইন ফাংশন যেমন map, filter, reduce এগুলোর মাধ্যমে কালেকশনগুলোর উপর অপারেশন করতে সহায়তা করে।

উদাহরণ:

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)

    // Using map
    val squares = numbers.map { it * it }
    println("Squares: $squares") // আউটপুট: Squares: [1, 4, 9, 16, 25]

    // Using filter
    val evenNumbers = numbers.filter { it % 2 == 0 }
    println("Even Numbers: $evenNumbers") // আউটপুট: Even Numbers: [2, 4]
}

ব্যাখ্যা:

  • এখানে map এবং filter হলো Higher-order Functions, যা তালিকার উপর প্রয়োগ করা হয়েছে।

৪. কোডের পুনঃব্যবহারযোগ্যতা

Higher-order Functions কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে সাহায্য করে। আপনি একবার একটি ফাংশন তৈরি করলে সেটিকে বিভিন্ন জায়গায় ব্যবহার করতে পারেন।

উদাহরণ:

fun <T> List<T>.customFilter(predicate: (T) -> Boolean): List<T> {
    val result = mutableListOf<T>()
    for (item in this) {
        if (predicate(item)) {
            result.add(item)
        }
    }
    return result
}

fun main() {
    val numbers = listOf(1, 2, 3, 4, 5)
    val filtered = numbers.customFilter { it > 2 }
    println(filtered) // আউটপুট: [3, 4, 5]
}

ব্যাখ্যা:

  • এখানে customFilter হলো একটি Higher-order Function যা List ক্লাসের এক্সটেনশন ফাংশন হিসেবে কাজ করে এবং একটি ল্যাম্বডা প্যারামিটার গ্রহণ করে।

৫. ফাংশনাল প্রোগ্রামিংয়ের সুবিধা

Higher-order Functions ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ। এগুলো কম্পিউটেশনের জন্য ফাংশনকে প্রথম শ্রেণীর নাগরিক হিসেবে গণ্য করে, ফলে কোড লেখার সময় একটি নতুন দৃষ্টিভঙ্গি প্রদান করে।


উপসংহার

Higher-order Functions কটলিনের একটি শক্তিশালী ফিচার যা কোডকে আরও ফ্লেক্সিবল, পুনঃব্যবহারযোগ্য এবং কার্যকর করে তোলে। ফাংশন প্যারামিটার হিসেবে গ্রহণ করে, রিটার্ন করে এবং কালেকশনগুলোর উপর বিভিন্ন কার্যকলাপ করতে সক্ষম হওয়ার মাধ্যমে এটি প্রোগ্রামিংকে আরও সহজ ও সিম্পল করে।

Content added By

Inline Functions এবং Lambda Optimization

210

Inline Functions এবং Lambda Optimization

কটলিনে Inline Functions এবং Lambda Optimization এর মাধ্যমে কোডের কার্যকারিতা এবং পারফরম্যান্স উন্নত করা যায়। Inline Functions ফাংশন কলের ওভারহেড কমাতে সহায়তা করে, এবং Lambda Optimization নিশ্চিত করে যে ল্যাম্বডা এক্সপ্রেশনগুলো মেমোরি ব্যবহারের ক্ষেত্রে আরও কার্যকর।


১. Inline Functions

Inline Functions হলো এমন ফাংশন, যা কম্পাইলারকে নির্দেশ দেয় যে যখন এই ফাংশনটি কল করা হয়, তখন ফাংশনের বডি সরাসরি সেই স্থানে সংযোজন করা উচিত, যাতে ফাংশন কলের ওভারহেড কমানো যায়।

i) Inline Functions ডিক্লারেশন

Inline Functions তৈরি করতে inline কীওয়ার্ড ব্যবহার করতে হয়।

উদাহরণ:

inline fun log(message: String) {
    println("Log: $message")
}

fun main() {
    log("Application started")
}

ব্যাখ্যা:

  • এখানে log ফাংশনটি inline হিসাবে ডিফাইন করা হয়েছে। যখন এটি কল করা হবে, তখন ফাংশনের বডি সরাসরি সেই স্থানে যোগ হবে, ফলে ফাংশন কলের ওভারহেড কমবে।

২. Lambda Optimization

কটলিনে ল্যাম্বডা এক্সপ্রেশন ব্যবহার করার সময়, যদি আপনি কোনো ল্যাম্বডা ফাংশনকে inline ফাংশনে পাস করেন, তাহলে এটি সাধারণত আরও কার্যকরী হয়। কারণ inline ফাংশনের মাধ্যমে ল্যাম্বডা এক্সপ্রেশনগুলো ক্লোজার তৈরি না করেই এক্সিকিউট হয়।

i) Inline Function with Lambda

উদাহরণ:

inline fun measureTime(block: () -> Unit) {
    val start = System.currentTimeMillis()
    block() // ল্যাম্বডা এক্সপ্রেশন কল করা হচ্ছে
    val end = System.currentTimeMillis()
    println("Time taken: ${end - start} ms")
}

fun main() {
    measureTime {
        for (i in 1..1000000) {
            // কিছু কাজ
        }
    }
}

ব্যাখ্যা:

  • এখানে measureTime ফাংশনটি inline, এবং এটি একটি ল্যাম্বডা এক্সপ্রেশন প্যারামিটার হিসেবে গ্রহণ করছে। এটি যখন কল হয়, তখন ল্যাম্বডা এক্সপ্রেশনটি inline হয়ে যাবে, ফলে রানটাইমে ক্লোজার তৈরি করার প্রয়োজন হবে না।

৩. Advantages of Inline Functions

  • Performance Improvement: Inline Functions ফাংশন কলের ওভারহেড কমায়, বিশেষ করে যখন ছোট ফাংশনগুলি একাধিক স্থানে ব্যবহৃত হয়।
  • Code Readability: Inline Functions ব্যবহারে কোড আরও পরিষ্কার এবং রিডেবল হয়।
  • No Closure Overhead: Lambda Expressions inline হলে ক্লোজার তৈরি না করায় মেমোরি ব্যবহারে অপ্টিমাইজেশন হয়।

৪. Limitations of Inline Functions

  • Code Size: বড় inline ফাংশনগুলো ব্যবহার করলে কোড সাইজ বেড়ে যেতে পারে, যা ইনস্ট্রাকশন ক্যাশে সমস্যা তৈরি করতে পারে।
  • Recursion: Inline Functions রিক্রসিভ হওয়া যাবে না, কারণ এটি অনন্ত লুপের সমস্যা তৈরি করতে পারে।

৫. Example of Inline Function with Lambda Optimization

inline fun runMultipleTimes(times: Int, block: () -> Unit) {
    repeat(times) {
        block()
    }
}

fun main() {
    runMultipleTimes(3) {
        println("Hello, Kotlin!")
    }
}

ব্যাখ্যা:

  • এখানে runMultipleTimes একটি inline ফাংশন যা নির্দিষ্ট সংখ্যক বার একটি ল্যাম্বডা এক্সপ্রেশন কল করে। এটি ল্যাম্বডা এক্সপ্রেশনটিকে একটি ক্লোজারে রূপান্তর না করে কার্যকরীভাবে এক্সিকিউট করে।

উপসংহার

কটলিনে Inline Functions এবং Lambda Optimization কোডের কার্যকারিতা এবং পারফরম্যান্স উন্নত করতে সাহায্য করে। Inline Functions ফাংশন কলের ওভারহেড কমায় এবং Lambda Expressions এর ক্লোজার তৈরির প্রয়োজনীয়তা কমায়, ফলে মেমোরি ব্যবহারের ক্ষেত্রে অপ্টিমাইজেশন ঘটে।

Content added By

Function Types এবং Anonymous Functions

243

Function Types এবং Anonymous Functions

কটলিনে Function Types এবং Anonymous Functions ফাংশনাল প্রোগ্রামিংয়ের গুরুত্বপূর্ণ কনসেপ্ট। এগুলো কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়ায়। নিচে এই দুইটি বিষয়ে বিস্তারিত আলোচনা করা হলো।


১. Function Types

Function Types কটলিনে একটি ফাংশনের সিগনেচারকে বোঝায়, যেখানে ফাংশনের ইনপুট প্যারামিটার এবং আউটপুট টাইপ উল্লেখ করা হয়। কটলিনে একটি ফাংশনের টাইপ উল্লেখ করতে, আপনি প্যারামিটারগুলোর টাইপ এবং রিটার্ন টাইপের মধ্যে -> ব্যবহার করেন।

উদাহরণ:

kotlin

Copy code

val sum: (Int, Int) -> Int = { a, b -> a + b }

ব্যাখ্যা:

  • এখানে sum একটি function type, যা দুটি Int প্যারামিটার নেয় এবং একটি Int রিটার্ন করে।

Function Types এর Syntax

val functionName: (ParameterType1, ParameterType2, ...) -> ReturnType

২. Function Types এর ব্যবহার

Function types সাধারণত higher-order functions এ ব্যবহৃত হয়, যেখানে একটি ফাংশন অন্য ফাংশনকে প্যারামিটার হিসেবে গ্রহণ করে বা একটি ফাংশনকে রিটার্ন করে।

উদাহরণ:

fun calculate(a: Int, b: Int, operation: (Int, Int) -> Int): Int {
    return operation(a, b)
}

fun main() {
    val result = calculate(5, 3) { x, y -> x * y }
    println(result) // আউটপুট: 15
}

ব্যাখ্যা:

  • এখানে calculate একটি higher-order function, যা দুটি সংখ্যা এবং একটি ফাংশন প্যারামিটার হিসেবে গ্রহণ করছে। operation ফাংশনটি ইনপুট সংখ্যা দুটির উপর কার্যকর হবে।

৩. Anonymous Functions

Anonymous Functions হলো এমন ফাংশন যেগুলোর কোন নাম নেই এবং এগুলো সাধারণত lambda expressions-এর চেয়ে বেশি কার্যকরী। আপনি যখন একটি নতুন ফাংশন তৈরি করতে চান কিন্তু তা একটি ভ্যারিয়েবলে সংরক্ষণ করতে চান না, তখন anonymous functions ব্যবহার করা হয়।

Syntax:

val functionName: (ParameterType1, ParameterType2, ...) -> ReturnType = fun(parameter1: ParameterType1, parameter2: ParameterType2, ...) {
    // Function body
}

উদাহরণ:

val multiply: (Int, Int) -> Int = fun(a: Int, b: Int): Int {
    return a * b
}

fun main() {
    println(multiply(3, 4)) // আউটপুট: 12
}

ব্যাখ্যা:

  • এখানে multiply একটি anonymous function যা দুটি Int সংখ্যা গ্রহণ করে এবং তাদের গুণফল রিটার্ন করে।

৪. Anonymous Functions with Return Types

Anonymous functions-এ আপনি রিটার্ন টাইপ নির্দিষ্ট করতে পারেন।

উদাহরণ:

val add: (Int, Int) -> Int = fun(x: Int, y: Int): Int {
    return x + y
}

fun main() {
    println(add(2, 3)) // আউটপুট: 5
}

ব্যাখ্যা:

  • এখানে add একটি anonymous function যা দুটি সংখ্যা যোগ করে এবং রিটার্ন করে।

৫. Differences between Lambda Expressions and Anonymous Functions

বৈশিষ্ট্যLambda ExpressionsAnonymous Functions
নামনামহীননামহীন
Syntax{ parameters -> body }fun(parameters): ReturnType { body }
Return TypeReturn type স্বয়ংক্রিয়ভাবে নির্ধারণ হয়Return type নির্দিষ্ট করতে হয়
Functional Typeসর্বদা Function TypesFunction Types হতে পারে
return Keywordreturn ব্যবহার করলে বাইরের ফাংশনে যায়return ব্যবহার করলে শুধুমাত্র নিজস্ব ফাংশনে যায়

উপসংহার

কটলিনে Function Types এবং Anonymous Functions শক্তিশালী কনসেপ্ট, যা কোডের পুনঃব্যবহারযোগ্যতা এবং ফ্লেক্সিবিলিটি বাড়ায়। Function types কেবল ফাংশনের সিগনেচারকে বোঝায়, যেখানে anonymous functions নামহীন ফাংশন তৈরির একটি উপায়। এই ফিচারগুলো ফাংশনাল প্রোগ্রামিংয়ের সুবিধা গ্রহণ করতে সহায়ক।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...